/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pingouin;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.util.ArrayList;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 *
 * @author Hippolyte
 */
public class PanneauHexa extends JPanel {

    private Graphics ag;
    private Color color;
    public int x;
    public int y;
    public static final int sizeMessage = 12;

//    PanneauAccueil acc;
    public PanneauHexa(int x, int y, PanneauAccueil p) {
        super();
        this.x = x;
        this.y = y;
//        this.acc = p;
        addMouseListener(new GestionSouris());
    }

    @Override
    public void paintComponent(Graphics g) {

//        this.setLayout(null);
//        this.setBounds(250, 0, x, y);
//
//        super.paintComponent(g);

        ag = g;
        color = g.getColor();

        Image i = new ImageIcon("images/fond.jpg").getImage();
        ag.drawImage(i, 0, 0, x, y, null);
//        ag.drawImage(i, 0, 0, x * 6 / 15, y, null);


        ArrayList<Hexa> hexasADessiner = (ArrayList<Hexa>) Partie.ressources.hexas.clone();

        for (Hexa h : hexasADessiner) {
            ag.setColor(Hexa.FontColor);
            dessinerFillHexa(h);
            ag.setColor(Hexa.color);
            dessinerHexa(h);
        }




        if (Partie.ressources.PingouinSelectionne != null) {

            Pingouin clone = (Pingouin) Partie.ressources.PingouinSelectionne.clone();

            ag.setColor(Pingouin.COLOR_PINGOUIN_SELECT);
            dessinerFillHexa(clone.hexa);

            ag.setColor(Pingouin.COLOR_DEPLACEMENT_POSS);
            if (clone.hexa != null) {
                for (Hexa h : clone.hexa.deplacementsPossibles()) {
                    dessinerFillHexa(h);
                }
            }
        }


        ag.setColor(color);

        hexasADessiner = (ArrayList<Hexa>) Partie.ressources.hexas.clone();

        for (Hexa h : hexasADessiner) {
            ecrireNum(h);
        }

        for (Joueur j : Partie.ressources.joueurs) {
            ag.setColor(j.color);
            if (j.pingouins != null) {
                for (Pingouin p : j.pingouins) {
                    if (p.hexa != null && !p.fini) {
                        dessinerPingouin(p, j.nom);
                    }
                }
            }
        }

        ag.setColor(Color.WHITE);
        
        int xString = 120;
        int yString = 15;

        ArrayList<String> messagesAEcrire = (ArrayList<String>) Partie.ressources.messages.clone();

        if (messagesAEcrire.size() > 1) {
            ecrireMessage(messagesAEcrire.get(messagesAEcrire.size() - 2), xString, yString);
            yString += PanneauHexa.sizeMessage;
        }
        if (messagesAEcrire.size() > 0) {
            ecrireMessage(messagesAEcrire.get(messagesAEcrire.size() - 1), xString, yString);
        }


        xString = 10;
        yString = 15;

        

        for (Joueur j : Partie.ressources.joueurs) {
            ecrireMessage("Joueur " + j.nom + " : " + j.nbPoisson(), xString, yString);
            yString += sizeMessage;
        }

        repaint();

//            acc.paintComponent(acc.ag);
//        }

    }

    public void ecrireNum(Hexa h) {

        if (h != null) {

        ag.drawString(h.num + "", h.xChar, h.yChar);
            Image i = new ImageIcon("images/fish" + h.nbPoisson + ".png").getImage();
            ag.drawImage(i, h.xChar, h.yChar, Hexa.LARG_POISSON, Hexa.HAUT_POISSON, null);
        }

    }

    public void dessinerFillHexa(Hexa h) {

//        if (h != null && !Partie.ressources.joues.contains(h)) {
        if (h != null) {
            ag.fillPolygon(h.toPolygon());
        }

    }

    public void dessinerHexa(Hexa h) {

        if (h != null) {
//        if (h != null && !Partie.ressources.joues.contains(h)) {
            ag.drawPolygon(h.toPolygon());
        }

    }

    public void dessinerPingouin(Pingouin p, String nom) {
//        ag.fillOval(p.hexa.xPingouin, p.hexa.yPingouin, Pingouin.RAYON, Pingouin.RAYON);
        Image i = new ImageIcon("images/p_" + nom + ".png").getImage();
        ag.drawImage(i, p.hexa.xPingouin, p.hexa.yPingouin, Pingouin.RAYON, Pingouin.RAYON, null);
    }

    public void ecrireMessage(String s, int xString, int yString) {
        ag.drawString(s, xString, yString);
    }
}
